home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_b / pcopy.atr < prev    next >
Text File  |  1995-04-22  |  4KB  |  92 lines

  1. 10 GOTO 375 
  2. 15 GRAPHICS K0:? "POLYCOPY - ATARI v 2.0" 
  3. 20 ? "Space for ";INT(BUFF/125);" sectors":? :IP=-K1 
  4. 25 GOSUB 250:IF IP=DSN THEN 40 
  5. 30 IF IP<DSN THEN GOSUB 355:IF Z=YES THEN 25 
  6. 35 IF IP<K1 THEN 235 
  7. 40 MAX=IP-K1:? "Type 'Y' if O.K. ";:GOSUB 335:? :IF Z<>YES THEN 235 
  8. 45 IP=K0:OP=K0:SPLIT=HI:APND=HI:GOTO 55 
  9. 50 ? :GOSUB 325 
  10. 55 ADDR=ADR(Y$):ROOM=BUFF 
  11. 60 IF IP>MAX THEN IP=IP-K1:GOSUB 145:GOTO 240 
  12. 65 Y=IP:GOSUB 230:TRAP 80:OPEN #K1,K4,K0,DSN$:TRAP TOFF 
  13. 70 IF SPLIT<>IP THEN ? "LOADING ";DSN$;:GOTO 100 
  14. 75 TRAP 80:POINT #K1,SEC,BYTE:TRAP TOFF:APND=IP:? "Contin'g ";DSN$;:GOTO 100 
  15. 80 TRAP TOFF:Z=PEEK(195):CLOSE #K1:IF Z<>170 THEN 110 
  16. 85 ? :? DSN$;" not found,":? "Want to try another disk?"; 
  17. 90 GOSUB 350:? :IF Z=YES THEN ? "Insert new disk";:GOSUB 330:GOTO 65 
  18. 95 X(IP,K0)=K0:IP=IP+K1:GOTO 60 
  19. 100 X(IP,K0)=ADDR 
  20. 105 SIZE=USR(CIO,K1,7,ADDR,ROOM):Z=PEEK(851):IF Z<128 OR Z=136 THEN 115 
  21. 110 CLOSE #K1:? :GOSUB 370:GOTO 95 
  22. 115 ? " size = ";SIZE;:X(IP,K1)=SIZE:IF Z=136 THEN 125 
  23. 120 ? "/";:NOTE #K1,SEC,BYTE:SPLIT=IP 
  24. 125 ? :CLOSE #K1 
  25. 130 ADDR=ADDR+SIZE:ROOM=ROOM-SIZE:IF ROOM>K0 THEN IP=IP+K1:GOTO 60 
  26. 135 GOSUB 145:IF SPLIT<>IP THEN IP=IP+K1:IF IP>MAX THEN 60 
  27. 140 GOTO 50 
  28. 145 IF ROOM=BUFF THEN RETURN  
  29. 150 ? :? "Insert destination disk";:GOSUB 330 
  30. 155 ADDR=X(OP,K0):SIZE=X(OP,K1):IF ADDR=K0 THEN 220 
  31. 160 Y=OP:GOSUB 230:Z=8:IF APND=OP THEN Z=Z+K1 
  32. 165 TRAP 185:OPEN #K2,Z,K0,DSN$:TRAP TOFF:IF APND=OP THEN ? "Append'g ";:GOTO 175 
  33. 170 ? "Writing "; 
  34. 175 ? DSN$;" size = ";SIZE 
  35. 180 Z=USR(CIO,K2,11,ADDR,SIZE) 
  36. 185 Z=PEEK(867) 
  37. 190 TRAP 190:CLOSE #K2:TRAP TOFF:IF Z<128 THEN 220 
  38. 195 IF Z<>162 THEN GOSUB 370:GOTO 220 
  39. 200 ? "Disk full, try another?";:GOSUB 335:IF Z<>YES THEN 235 
  40. 205 TRAP 210:XIO 33,#K2,K0,K0,DSN$ 
  41. 210 TRAP TOFF:IF APND<>OP THEN ? "Insert new disk";:GOSUB 330:GOTO 155 
  42. 215 IP=OP:SPLIT=HI:APND=HI:POP :GOTO 50 
  43. 220 IF OP<IP THEN OP=OP+K1:GOTO 155 
  44. 225 RETURN  
  45. 230 DSN$="D:":DSN$(K3)=X$(Y*K12+K1,Y*K12+K12):GOTO 360 
  46. 235 ? :? " USER ABORTED! " 
  47. 240 GOSUB 355:IF Z=YES THEN 15 
  48. 245 CLR :END  
  49. 250 GOSUB 325:CLOSE #K3:OPEN #K3,6,K0,"D:*.*":IF IP<K0 THEN IP=K0:X$="":? " Copy, Quit, other to skip " 
  50. 255 INPUT #K3,Y$:IF LEN(Y$)<17 THEN 320 
  51. 260 DSN$="":FOR Z=K3 TO 13:IF Z=11 THEN DSN$(LEN(DSN$)+K1)="." 
  52. 265 IF Y$(Z,Z)=" " THEN 275 
  53. 270 DSN$(LEN(DSN$)+K1)=Y$(Z,Z) 
  54. 275 NEXT Z:IF DSN$="DOS.SYS" THEN 255 
  55. 280 IF LEN(DSN$)<K12 THEN DSN$(LEN(DSN$)+K1,K12)="           " 
  56. 285 SEC=K0:TRAP 290:SEC=VAL(Y$(15,17)) 
  57. 290 TRAP TOFF:? IP+K1;:POKE COL,5:? DSN$;:POKE COL,22:? SEC;:POKE COL,28:? "?";:GOSUB 340 
  58. 295 IF Z=67 THEN ? CHR$(30);"C":GOTO 310 
  59. 300 ? CHR$(ERASE);:IF Z=81 THEN 320 
  60. 305 GOTO 255 
  61. 310 X$(LEN(X$)+K1)=DSN$:IP=IP+K1:IF IP=DSN THEN 320 
  62. 315 GOTO 255 
  63. 320 CLOSE #K3:RETURN  
  64. 325 ? "Insert 'from' disk"; 
  65. 330 ? ", press any key" 
  66. 335 GOSUB 340:? CHR$(ERASE);:RETURN  
  67. 340 GET #K4,Z:IF Z=27 THEN POP :GOTO 235 
  68. 345 RETURN  
  69. 350 GOSUB 340:? :RETURN  
  70. 355 ? :? "Any more files?";:GOTO 335 
  71. 360 Z=PEEK(764):POKE 764,HI-K1:IF Z=28 THEN 235 
  72. 365 RETURN  
  73. 370 ? "[";Z;"] I/O ERROR ON ";DSN$:? "...skipping to next file":? :RETURN  
  74. 375 REM  DELETES LINES BELOW THIS POINT  
  75. 380 GRAPHICS K0:POSITION 13,12:? " PLEASE WAIT " 
  76. 385 K0=0:K1=1:K2=K1+K1:K3=K2+K1:K4=K3+K1:K12=K4*K3:HI=256:TOFF=40000 
  77. 390 YES=89:LET ERASE=156:COL=YES-K4:OPEN #K4,K4,K0,"K:" 
  78. 395 DSN=16:DIM DSN$(16),X$(DSN*K12),X(DSN-K1,K1) 
  79. 400 CIO=960:FOR Y=K0 TO 42:READ Z:POKE CIO+Y,Z:NEXT Y:POKE 709,PEEK(710) 
  80. 405 DATA 104,104,104,10,10,10,10,170 
  81. 410 DATA 104,104,157,66,3,104,157,69 
  82. 415 DATA 3,104,157,68,3,104,157,73 
  83. 420 DATA 3,104,157,72,3,32,86,228 
  84. 425 DATA 189,72,3,133,212,189,73,3 
  85. 430 DATA 133,213,96 
  86. 435 MAX=842:APND=35 
  87. 440 IP=375:OP=450:REM LINE REMOVAL NUMBERS 
  88. 445 GOTO 460:REM REMOVE THIS LINE TO ALLOW DELETES 
  89. 450 ? CHR$(125):? :FOR Z=IP TO OP STEP 5:PRINT Z:NEXT Z:? "CONT":POSITION K0,K0:POKE MAX,13 
  90. 455 STOP  
  91. 460 POKE MAX,K12:BUFF=FRE(K0)-APND:DIM Y$(BUFF):BUFF=BUFF-K3:GOTO 15 
  92.